home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-10-09 | 1.7 KB | 65 lines | [TEXT/MEDT] |
- MODULE EventExample;
-
- (* This module demonstrates event handling. This example doesn't make much *)
- (* sense, but a sensible example would be much longer... *)
-
- FROM EventBase IMPORT mouseDown, mouseUp, keyDown, Point, EventRecord,
- PushTask, PopTask, PollEventTasks;
-
- FROM InOut IMPORT WriteString, WriteInt, Write, WriteLn;
-
- VAR MouseTask, KeyTask : INTEGER;
- Quit : BOOLEAN;
-
- PROCEDURE TrackMouse(VAR Event : EventRecord) : BOOLEAN;
-
- BEGIN
- IF (Event.what # mouseDown) & (Event.what # mouseUp) THEN
- RETURN FALSE
- END (* IF *);
- IF Event.what = mouseDown THEN
- WriteString("You pressed the mouse button! Coordinates : (");
- ELSE
- WriteString("You released the mouse button! Coordinates : (");
- END (* IF *);
- WriteInt(Event.where.h,3);
- Write(",");
- WriteInt(Event.where.v,3);
- Write(")");
- WriteLn;
- RETURN TRUE
- END TrackMouse;
-
-
- PROCEDURE KeyPressed(VAR Event : EventRecord) : BOOLEAN;
- VAR i : RECORD
- CASE :CARDINAL OF
- 0 : long : LONGINT;
- |1 : hi,lo : CARDINAL
- END (* CASE *)
- END;
-
- BEGIN
- IF (Event.what # keyDown) THEN
- RETURN FALSE
- END (* IF *);
- WriteString("You pressed the key '");
- i.long := Event.message;
- Write(CHR(i.lo MOD 256));
- Quit := (CHR(i.lo MOD 256) < " ");
- Write("'");
- WriteLn;
- RETURN TRUE
- END KeyPressed;
-
- BEGIN (* EventExample *)
- MouseTask := PushTask(TrackMouse);
- KeyTask := PushTask(KeyPressed);
- REPEAT
- PollEventTasks
- UNTIL Quit;
- PopTask(KeyTask);
- PopTask(MouseTask)
- END EventExample.
-
-